package sort_;

import java.util.Scanner;

public class BubbleSort {
    public static void main(String[] args) {
        int[] a={1,2,122,33,4,123,4454};

//        bubbleSort(a);
        /**
         * 加入flag标志位优化
         */
        bubbleSortImprove(a);
        for (int num: a) {
            System.out.print(num+" ");
        }

    }

    private static void bubbleSortImprove(int[] a) {
        int n=a.length;
        for(int i=0;i<n-1;++i){
            boolean flag=true;
            for(int j=0;j<n-i-1;++j){
                if(a[j]>a[j+1]){
                    int t=a[j+1];
                    a[j+1]=a[j];
                    a[j]=t;
                    flag=false;
                }
            }
            if(flag==true){
               return;
            }
        }
    }

    /**
     * 冒泡排序的思想
     * 外层循环遍历n-1次
     * 里层循环遍历[1,n-i-1]
     * 相邻两个元素两两比较，将大的元素放到后面
     * 每一次循环将一个最大的数排到最后
     * @param a
     */
    private static void bubbleSort(int[] a) {
        int n=a.length;
        for(int i=0;i<n-1;++i){
            for(int j=0;j<n-i-1;++j){
                if(a[j]>a[j+1]){
                    int k=a[j+1];
                    a[j+1]=a[j];
                    a[j]=k;
                }
            }
            for (int num: a) {
                System.out.print(num+" ");
            }
            System.out.println();
        }
    }
}
